![]() |
![]() |
Technote 10003sbitÉtÉHÉìÉgDžǬǢǃWritten by : Takayuki Mizuno (JapanDTS) Å@Å@Å@Å@Å@Å@Å@Å@Å@Å@Å@Å@April 1994ñ{ÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕÅAQuickDraw GXÇ…ÇÊÇËì±ì¸Ç≥ÇÍÇΩêVǵǢTrueTypeÉXÉPÅ[ÉâÅ[Ç…ÇÊǡǃÉTÉ|Å[ÉgÇ≥ÇÍÇÈsbitÉtÉHÉìÉgÉtÉHÅ[É}ÉbÉgDžǬǢǃê‡ñæÇ∑ÇÈLJÇÃÇ≈Ç∑ÅB
ŰÉrÉbÉgÉ}ÉbÉvÅEÉçÉPÅ[ÉVÉáÉìÅEÉeÅ[ÉuÉã
ÅEÉrÉbÉgÉ}ÉbÉvÅEÉTÉCÉYÅEÉeÅ[ÉuÉã ÉrÉbÉgÉ}ÉbÉvÅEÉçÉPÅ[ÉVÉáÉìÅEÉeÅ[ÉuÉãÅEÉwÉbÉ_Ç…ë±Ç¢ÇƒÅAÉrÉbÉgÉ}ÉbÉvÅEÉTÉCÉYÅEÉeÅ[ÉuÉãÇÃîzóÒÇ™ë±Ç´Ç‹Ç∑ÅBDZÇÃÉeÅ[ÉuÉãÇ…ÇÕÅAäeÉ|ÉCÉìÉgÉTÉCÉYÇÃÉrÉbÉgÉ}ÉbÉvÉtÉHÉìÉgÇ…ã§í Ç∑ÇÈïÔäáìIÇ»èÓïÒÇ™äiî[Ç≥ÇÍǃǮÇËÅAÉtÉHÅ[É}ÉbÉgÇÕâ∫ãLÇÃÇÊǧDžǻǡǃǢNjÇ∑ÅBäÓñ{ìIÇ…ÅAǪÇÃÉtÉHÉìÉgǙǫÇÃÉ|ÉCÉìÉgÉTÉCÉYÇÃÉrÉbÉgÉ}ÉbÉvÉfÅ[É^ÇéùǬǩDžâûÇ∂ǃÅADZÇÃÉeÅ[ÉuÉãÇÇ¢Ç≠ǬéùǬǩǙåàÇ‹ÇËÇ‹Ç∑ÅB
colorRefÇÕÅAåªç›ÇÃTrueTypeÉXÉPÅ[ÉâÅ[Ç≈ÇÕÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇπÇÒÇ™ÅAè´óàÇÃägí£ÇÃÇΩÇflÇ…ë∂ç›ÇµÇ‹Ç∑ÅBÇΩÇæÇµÅANewtonǻǫÇÃëºÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ≈ÇÕÇ∑Ç≈Ç…égópÇ≥ÇÍǃǢNjÇ∑ÅB ÉtÉâÉOÇÕÅAÉXÉÇÅ[ÉãÉÅÉgÉäÉNÉXÉ^ÉCÉvÇÃÉÅÉgÉäÉNÉXèÓïÒÇégópǵÇΩèÍçáÅAǪÇÍÇ™ècèëÇ´ópÇÃÉÅÉgÉäÉNÉXèÓïÒÇ»ÇÃÇ©ÅAècèëÇ´ópÇÃÉÅÉgÉäÉNÉXèÓïÒÇ»ÇÃÇ©ÇéwíËǵNjÇ∑ÅB
ÉtÉHÉìÉgÇ…ä÷Ç∑ÇÈÉOÉçÅ[ÉoÉãÉÅÉgÉäÉNÉXèÓïÒÇÕÅAsbitLineMetricsÉ^ÉCÉvÇÃÉåÉRÅ[ÉhÇ…äiî[Ç≥ÇÍÇ‹Ç∑ÅBǪǵǃÅAÉrÉbÉgÉ}ÉbÉvÉTÉCÉYÉeÅ[ÉuÉãÇ…ÇÕÅAâ°èëÇ´ópÇΔècèëÇ´ópÇÃ2ǬÇÃÉÅÉgÉäÉNÉXèÓïÒÇ™äiî[Ç≥ÇÍÇ‹Ç∑ÅBsbitLineMetricsÇÃÉtÉHÅ[É}ÉbÉgÇÕâ∫ãLÇÃÇÊǧDžǻǡǃǢNjÇ∑ÅB
*Åo ÅpÇÕècèëÇ´ópÇÃíl minOriginSBÅAminAdvanceSBÅAmaxBeforeBLÅAminAfterBLÇÕÅANewtonǻǫÇÃëºÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ≈ÇÕégópÇ≥ÇÍÇ‹Ç∑Ç™ÅAQuickDraw GXÇ≈ÇÕåªç›égópÇ≥ÇÍǃǢNjÇπÇÒÅBäeílÇÃà”ñ°Ç…ǬǢǃÇÕÅAê}2ÇéQèΔǵǃâ∫Ç≥Ç¢ÅB ÅEÉrÉbÉgÉ}ÉbÉvÅEÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉã ÉrÉbÉgÉ}ÉbÉvÅEÉTÉCÉYÅEÉeÅ[ÉuÉãÇÃîzóÒÇÃéüÇ…ÅAÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãîzóÒÇ™ë±Ç´Ç‹Ç∑ÅBÉCÉìÉfÉbÉNÉXÇ÷ÇÃÉIÉtÉZÉbÉgÇÕÉrÉbÉgÉ}ÉbÉvÅEÉTÉCÉYÅEÉeÅ[ÉuÉãÇÃindexSubTableArrayOffssetÇ…äiî[Ç≥ÇÍǃǢNjÇ∑ÅBç≈èâÇÃÉCÉìÉfÉbÉNÉXÉTÉuÉeÅ[ÉuÉãîzóÒÇÕÅAç≈å„ÇÃbitmapSizeTableÇ…ë±Ç¢Çƒë∂ç›ÇµÇ‹Ç∑ÅBǪǵǃÅADZÇÃîzóÒÇÃéüÇ…ÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇ™ë±Ç´Ç‹Ç∑ÅBÇ‹ÇΩÅA2ǬÇflà»ç~ÇÃÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãîzóÒÇΔǪÇÃÉCÉìÉfÉbÉNÅEÉTÉuÉeÅ[ÉuÉãÇÕÅAëOÇÃÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇÃéüÇ…ë±Ç´Ç‹Ç∑ÅBè⁄ǵÇ≠ÇÕÅAê}3ÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅBäeÉCÉìÉfÉbÉNÅEÉTÉuÉeÅ[ÉuÉãÇÕÅAÉçÉìÉOÉèÅ[Éhã´äEÇ≈énÇ‹ÇÁÇ»Ç≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅBÅiÉtÉHÅ[É}ÉbÉg3ÇégópÇ∑ÇÈèÍçáÇ…ÇÕÅAuint16ÇÉpÉfÉBÉìÉOÇÃÇΩÇflÇ…offsetArrayÇ…í«â¡Ç∑ÇÈïKóvǙdžÇÈǩLJǵÇÍÇ‹ÇπÇÒÅj
ǪǵǃÅAç≈èIìIÇ…ÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇ…ìûíBǵNjÇ∑ÅBåªç›ÉvÉçÉ|Å[ÉVÉáÉiÉãÉtÉHÉìÉgÇÃÇΩÇflÇ…2ǬÇÃÉtÉHÅ[É}ÉbÉgÇ™ë∂ç›ÇµÅAÅAÉÇÉmÉXÉyÅ[ÉXÉtÉHÉìÉgÇÃÇΩÇflÇ…1ǬÇÃÉtÉHÅ[É}ÉbÉgÇ™ë∂ç›ÇµÇ‹Ç∑ÅB 'bdat'ÇÃÉtÉHÅ[É}ÉbÉgÇÕÅADZÇÃÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇÃÉtÉHÅ[É}ÉbÉgÇ…ä÷åWÇ»Ç≠ìKìñÇ»ÉtÉHÅ[É}ÉbÉgÇégǧDZÇΔÇ™èoóàÇ‹Ç∑ÅBäeÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇ…ÇÊÇËÅAǪÇÃÉtÉHÉìÉgÇÃäeÉOÉäÉtÇÃé¿ç€ÇÃÉrÉbÉgÉ}ÉbÉvÉfÅ[É^Ç™'bdat'ÇÃǫDZDžäiî[Ç≥ÇÍǃǢÇÈǩǙÇÌÇ©ÇËÇ‹Ç∑ÅBÇ‹ÇΩÅAäeÉOÉäÉtÇÃÉfÅ[É^ÉTÉCÉYÇÕÅAoffsetArray[glyphIndex+1]-offsetArray[glyphIndex]ÇåvéZÇ∑ÇÈDZÇΔÇ…ÇÊÇËãÅÇflÇÈDZÇΔÇ™èoóàÇ‹Ç∑ÅBÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇ…ÇÕÅA3ǬÇÃÉtÉHÅ[É}ÉbÉgÇ™ë∂ç›ÇµÇ‹Ç∑ÅBÉtÉHÅ[É}ÉbÉg1ÇÕÉvÉçÉ|Å[ÉVÉáÉiÉãÉtÉHÉìÉgópÅAÉtÉHÅ[É}ÉbÉg2ÇÕÅAÉÇÉmÉXÉyÅ[ÉXÉtÉHÉìÉgópÅAÉtÉHÅ[É}ÉbÉg3ÇÕÅAÉvÉçÉ|Å[ÉVÉáÉiÉãÉtÉHÉìÉgópÇ≈Ç∑ÅBÉtÉHÅ[É}ÉbÉg3ÇÕÅAuint32Ç≈ÇÕÇ»Ç≠uint16ÇÃîzóÒÇégópÇ∑ÇÈà≥èkÇ≥ÇÍÇΩÉtÉHÅ[É}ÉbÉg1Ç≈Ç∑ÅB ǪÇÍǺÇÍÇÃÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇÕÉCÉìÉfÉbÉNÉXÅEÉTÉuÉwÉbÉ_ÇéùǡǃǮÇËÅAǪÇÃÉtÉHÅ[É}ÉbÉgÇÕâ∫ãLÇÃí ÇËÇ≈Ç∑ÅB
ÉtÉHÅ[É}ÉbÉg1ÇΔÉtÉHÅ[É}ÉbÉg3Ç≈ÇÕÅAǪÇÃÉfÅ[É^ÇÕòAë±ìIÇ…äiî[Ç≥ÇÍǃǢÇÈÇÃÇ≈ÅAäeÉOÉäÉtÇÃÉfÅ[É^ÇÃÉTÉCÉYÇÕ1Ǭå„ÇÎÇÃÉOÉäÉtÇÃÉIÉtÉZÉbÉgÇ©ÇÁåªç›ÇÃÉOÉäÉtÇÃÉIÉtÉZÉbÉgÇç∑ǵà¯Ç≠DZÇΔÇ…ÇÊÇËãÅÇflÇÈDZÇΔÇ™èoóàÇ‹Ç∑ÅB
ÉÇÉmÉXÉyÅ[ÉXÉtÉHÉìÉgÇ…ëŒÇµÇƒÇÕÅAÉtÉHÅ[É}ÉbÉg2ÇégópǵNjÇ∑ÅBÉÅÉgÉäÉNÉXèÓïÒÇÕÅA'bdat'Ç≈ÇÕÇ»Ç≠ÅADZÇÃÉCÉìÉfÉbÉNÉXÅEÉTÉuÉeÅ[ÉuÉãÇ…äiî[Ç≥ÇÍǃÅAÉrÉbÉgÉ}ÉbÉvÉfÅ[É^ÇÃǛǙ'bdat'Ç…äiî[Ç≥ÇÍÇ‹Ç∑ÅBÇ‹ÇΩÅAǪÇÃÉfÅ[É^ÇÕÅAÉoÉCÉgÉAÉâÉCÉìÅAÉrÉbÉgÉAÉâÉCÉìÅAà≥èkÇ≥ÇÍÇΩÉfÅ[É^ìôÇ≥NjǥNjǻÉtÉHÅ[É}ÉbÉgÇéÊÇÈDZÇΔÇ™èoóàÇ‹Ç∑ÅBÉrÉbÉgÉ}ÉbÉvÉfÅ[É^ÇÃÉTÉCÉYÇÕÅAimageSizeDždžÇËÇ‹Ç∑ÅBimageDataOffsetÇÕÅADZÇÃÉåÉìÉWÇÃÉOÉäÉtÇÃç≈èâÇÃ'bdat'ÇÃÉIÉtÉZÉbÉgÇ≈Ç∑ÅBécÇËÇÃÉOÉäÉtÇ…ä÷ǵǃÇÕÅAimageaSizeÇΔ(theDesiredGlyphIndex-firstGlyphInThisIndex)ÇÃílÇä|ÇØÇƒÅAǪÇÃåãâ ÇÉCÉìÉfÉbÉNÉXÅEÉTÉuÉwÉbÉ_ÇÃimageDataOffsetÇ…â¡Ç¶ÇÈDZÇΔÇ…ÇÊÇËÇÊÇËä»íPÇ…ãÅÇflÇÈDZÇΔÇ™èoóàÇ‹Ç∑ÅBÉtÉHÅ[É}ÉbÉg2ÇÃÉÅÉgÉäÉNÉXèÓïÒÇÕÅAbugGlyphMetricsÉ^ÉCÉvÇ≈äiî[Ç≥ÇÍÇ‹Ç∑ÅB
ŰÉrÉbÉgÉ}ÉbÉvÅEÉfÅ[É^ÅEÉeÅ[ÉuÉã
ÅE6ǬÇÃÉtÉHÅ[É}ÉbÉgÇ™QuickDraw GXÇ…ÇÊǡǃÉTÉ|Å[ÉgÇ≥ÇÍǃǢNjÇ∑ÅBÇ¢Ç≠ǬǩÇÃÉtÉHÅ[É}ÉbÉgÇÕÅAÉvÉçÉ|Å[ÉVÉáÉiÉãÉtÉHÉìÉgópÇ≈ÅAëºÇÃLJÇÃÇÕÉÇÉmÉXÉyÅ[ÉXÉtÉHÉìÉgópÇ≈Ç∑ÅBÇ‹ÇΩÅA1ǬÇÃÉtÉHÉìÉgì‡Ç≈ÅAàŸÇ»ÇÈÉtÉHÅ[É}ÉbÉgÇégópÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅAì˙ñ{åÍÉtÉHÉìÉgÇ≈ÇÕÅAÉçÅ[É}Éìïîï™ÇproportionalByteFormat6Ç≈íËã`ǵǃÅAì˙ñ{åÍïîï™ÇmonoFormat5Ç≈íËã`Ç∑ÇÈéñÇ™èoóàÇ‹Ç∑ÅB 'bdat'ÇÃ6ǬÇÃÉtÉHÅ[É}ÉbÉgÇÕà»â∫ÇÃí ÇËÇ≈Ç∑ÅB
ÉtÉHÅ[É}ÉbÉg1ÇΔÉtÉHÅ[É}ÉbÉg2ÇÕÅAǪÇÃÉrÉbÉgÉ}ÉbÉvÉCÉÅÅ[ÉWÇÃÉAÉâÉCÉìÉÅÉìÉgÇ™àŸÇ»ÇÈÇæÇØÇ≈ÅAóºï˚ÇΔLJÉXÉÇÅ[ÉãÉÅÉgÉäÉNÉXÇÃÉÅÉgÉäÉNÉXèÓïÒÇéùÇøÇ‹Ç∑ÅBÉtÉHÅ[É}ÉbÉg4ÇÕÅAÉÇÉfÉBÉtÉ@ÉCÉhÅEÉzÉtÉ}ÉìÅEÉGÉìÉRÅ[ÉfÉBÉìÉOÇ…ÇÊÇËà≥èkÇ≥ÇÍÇΩÉrÉbÉgÉ}ÉbÉvÉCÉÅÅ[ÉWÇéùǬÉtÉHÅ[É}ÉbÉgÇ≈Ç∑ÅBÉtÉHÅ[É}ÉbÉg5ÇÕÅAÉoÉCÉgÉèÅ[Éhã´äEÇ…Ç»ÇÈÇÊǧDžÉpÉfÉBÉìÉOÇ≥ÇÍÇΩÉrÉbÉgÉAÉâÉCÉìÇÃÉrÉbÉgÉ}ÉbÉvÉCÉÅÅ[ÉWÇéùǬÉtÉHÅ[É}ÉbÉgÇ≈ÅAÉÅÉgÉäÉNÉXÇ…ä÷Ç∑ÇÈÇ∑Ç◊ǃÇÃèÓïÒÇÕindexSubTable2Ç…äiî[Ç≥ÇÍÇ‹Ç∑ÅBÉtÉHÅ[É}ÉbÉg6ÇΔÉtÉHÅ[É}ÉbÉg7ÇÕÅAǪÇÃÉrÉbÉgÉ}ÉbÉvÉCÉÅÅ[ÉWÇÃÉAÉâÉCÉìÉÅÉìÉgÇ™àŸÇ»ÇÈÇæÇØÇ≈ÅAóºï˚ÇΔLJÉrÉbÉOÉÅÉgÉäÉNÉXÇÃÉÅÉgÉäÉNÉXèÓïÒÇéùÇøÇ‹Ç∑ÅB ÅEÇŸÇ«ÇÒÇ«ÇÃÉtÉHÅ[É}ÉbÉgÇ™ÅAbigGlyphMetricsÇ©smallGlyphMetricsÉ^ÉCÉvÇÃÉÅÉgÉäÉNÉXèÓïÒÇéùÇøÇ‹Ç∑ÅBÉrÉbÉOÉÅÉgÉäÉNÉXÇÕÅAâ°èëÇ´ópÇΔècèëÇ´ópÇÃóºï˚ÇÃÉÅÉgÉäÉNÉXèÓïÒÇéùǬDZÇΔÇ™èoóàÇ‹Ç∑Ç™ÅAÉXÉÇÅ[ÉãÉÅÉgÉäÉNÉXÇÕÅAÇ«ÇøÇÁÇ©àÍï˚ÇÃÉÅÉgÉäÉNÉXèÓïÒǵǩéùǬDZÇΔÇ™èoóàÇ‹ÇπÇÒÅB ÉrÉbÉOÉÅÉgÉäÉNÉXÇÃÉtÉHÅ[É}ÉbÉgÇÕà»â∫ÇÃí ÇËÇ≈Ç∑ÅB
ÉXÉÇÅ[ÉãÉÅÉgÉäÉNÉXÇÃÉtÉHÅ[É}ÉbÉgÇÕà»â∫ÇÃí ÇËÇ≈Ç∑ÅB
ê}2Ç≈ÇÕÅAäeÉÅÉgÉäÉNÉXèÓïÒÇÃãÔëÃìIÇ»ílÇÅAÉAÉãÉtÉ@ÉxÉbÉgÇÃÅugÅvÇégǡǃê‡ñæÇµÇƒÇ¢Ç‹Ç∑ÅB ÉÅÉgÉäÉNÉXèÓïÒÇÕÅAÇ∑Ç◊ǃêÆêîílÇÇΔÇËÇ‹Ç∑ÅBÇ‹ÇΩÅAvertAdvanceÇÕÅA-yï˚å¸Ç…Ç»ÇËÇ‹Ç∑Ç™ÅADZÇÍÇÕÅAÉ}ÉCÉiÉXÇÃílÇéÊÇËÇ‹ÇπÇÒÅBDZÇÍÇÕÅAãóó£Ç≈džÇËï˚å¸Çä‹Ç‹Ç»Ç¢Ç©ÇÁÇ≈Ç∑ÅBÅiècèëÇ´ÇÕÅAè„Ç©ÇÁâ∫ÇÃÉfÉBÉåÉNÉVÉáÉìÇΔâºíËÇ≥ÇÍǃǢNjÇ∑ÅjsmallGlyphMetricsÇégópÇ∑ÇÈÇΔÇ´Ç…ÇÕÅAÉrÉbÉgÉ}ÉbÉvÉTÉCÉYÉeÅ[ÉuÉãÇÃÉtÉâÉOÇÉZÉbÉgǵǃÅAǪÇÃÉÅÉgÉäÉNÉXÇ™ÅAècèëÇ´ópÇ»ÇÃÇ©â°èëÇ´ópÇ»ÇÃÇ©éwíËÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB ÅEà»â∫ÇÕÅA'bdat'ÇÃ6ǬÇÃÉtÉHÅ[É}ÉbÉgÇÃè⁄ç◊Ç≈Ç∑ÅB ÉtÉHÅ[É}ÉbÉg1ÅF
ÉtÉHÅ[É}ÉbÉg2ÅF
ÉtÉHÅ[É}ÉbÉg4ÅF
ÉtÉHÅ[É}ÉbÉg5ÅF
ÉtÉHÅ[É}ÉbÉg6ÅF
ÉtÉHÅ[É}ÉbÉg7ÅF
|
![]() |